package com.jyw.business.de.service;

import java.util.List;
import com.jyw.business.de.domain.DeTaskInfo;
import com.baomidou.mybatisplus.extension.service.IService;
import com.jyw.business.de.domain.dto.web.*;
import com.jyw.business.de.domain.vo.web.TaskDetailVO;
import com.jyw.business.de.domain.vo.web.TaskPageVO;
import com.jyw.business.de.domain.vo.web.TaskProcessVO;
import com.jyw.common.core.domain.model.SimpleDto;

/**
 * 需求-任务Service接口
 * 
 * @author ruoyi
 * @date 2024-02-19
 */
public interface IDeTaskInfoService extends IService<DeTaskInfo>
{
    /**
     * 查询需求-任务
     * 
     * @param id 需求-任务主键
     * @return 需求-任务
     */
    public DeTaskInfo selectDeTaskInfoById(Long id);

    /**
     * 查询需求-任务列表
     * 
     * @param deTaskInfo 需求-任务
     * @return 需求-任务集合
     */
    public List<DeTaskInfo> selectDeTaskInfoList(DeTaskInfo deTaskInfo);

    /**
     * 新增需求-任务
     * 
     * @param deTaskInfo 需求-任务
     * @return 结果
     */
    public int insertDeTaskInfo(DeTaskInfo deTaskInfo);

    /**
     * 修改需求-任务
     * 
     * @param deTaskInfo 需求-任务
     * @return 结果
     */
    public int updateDeTaskInfo(DeTaskInfo deTaskInfo);

    /**
     * 批量删除需求-任务
     * 
     * @param ids 需要删除的需求-任务主键集合
     * @return 结果
     */
    public int deleteDeTaskInfoByIds(Long[] ids);

    /**
     * 删除需求-任务信息
     * 
     * @param id 需求-任务主键
     * @return 结果
     */
    public int deleteDeTaskInfoById(Long id);

    /**
     * 需求添加任务
     * @param dto
     */
    void demandAddTask(TaskAddDto dto);

    /**
     * 需求暂停联动任务
     * @param dto
     */
    void demandPause(DemandOperDto dto);

    /**
     * 需求终止联动任务
     * @param dto
     */
    void demandTermination(DemandOperDto dto);

    /**
     * 任务分页查询
     * @param dto
     * @return
     */
    List<TaskPageVO> taskPage(TaskPageDto dto);

    /**
     * 任务接收
     * @param dto
     */
    void accept(SimpleDto<Long> dto);

    /**
     * 任务退回
     * @param dto
     */
    void back(DemandOperDto dto);

    /**
     * 任务处理
     * @param dto
     */
    void make(TaskMakeDto dto);

    /**
     * 任务暂停
     * @param dto
     */
    void pause(DemandOperDto dto);

    /**
     * 任务终止
     * @param dto
     */
    void termination(DemandOperDto dto);

    /**
     * 任务开启
     * @param dto
     */
    void open(SimpleDto<Long> dto);

    /**
     * 任务催办
     * @param dto
     */
    void hurry(SimpleDto<Long> dto);

    /**
     * 编辑任务
     * @param dto
     */
    void demandEditTask(TaskEditDto dto);

    /**
     * 需求详情查询
     * @param id
     * @return
     */
    TaskDetailVO getInfo(Long id);

    /**
     * 查询任务操作记录
     * @param id
     * @return
     */
    List<TaskProcessVO> getProcessInfo(Long id);

    /**
     * 工单转任务
     * @param addDto
     */
    void orderAddTask(TaskAddDto addDto);

    /**
     * 判断需求下任务是否全部完成
     * @param demandId
     * @return
     */
    Boolean taskOverInfo(Long demandId);
}
